/*!
 * required gridstack 1.1.1-dev CSS for default 12 and 1 columnMode size. Use gridstack-extra.css for others
 * https://gridstackjs.com/
 * (c) 2014-2020 Alain Dumesny, Dylan Weiss, Pavel Reznikov
 * gridstack.js may be freely distributed under the MIT license.
*/

$gridstack-columns: 12 !default;
$horizontal_padding: 20px !default;
$vertical_padding: 20px !default;
$animation_speed: .3s !default;

@mixin vendor($property, $value...){
  -webkit-#{$property}: $value;
  -moz-#{$property}: $value;
  -ms-#{$property}: $value;
  -o-#{$property}: $value;
  #{$property}: $value;
}

:root .grid-stack-item > .ui-resizable-handle { filter: none; }

.grid-stack {
  position: relative;

  &.grid-stack-rtl {
    direction: ltr;

    > .grid-stack-item {
      direction: rtl;
    }
  }

  .grid-stack-placeholder > .placeholder-content {
    border: 1px dashed lightgray;
    margin: 0;
    position: absolute;
    top: 0;
    left: $horizontal_padding / 2;
    right: $horizontal_padding / 2;
    bottom: 0;
    width: auto;
    z-index: 0 !important;
    text-align: center;
  }

  > .grid-stack-item {
    min-width: 100% / $gridstack-columns;
    position: absolute;
    padding: 0;

    > .grid-stack-item-content {
      margin: 0;
      position: absolute;
      top: 0;
      left: $horizontal_padding / 2;
      right: $horizontal_padding / 2;
      bottom: 0;
      width: auto;
      overflow-x: hidden;
      overflow-y: auto;
    }

    > .ui-resizable-handle {
      position: absolute;
      font-size: 0.1px;
      display: block;
      -ms-touch-action: none;
      touch-action: none;
    }

    &.ui-resizable-disabled > .ui-resizable-handle,
    &.ui-resizable-autohide > .ui-resizable-handle { display: none; }

    &.ui-draggable-dragging,
    &.ui-resizable-resizing {
      z-index: 100;

      > .grid-stack-item-content,
      > .grid-stack-item-content {
        box-shadow: 1px 4px 6px rgba(0, 0, 0, 0.2);
        opacity: 0.8;
      }
    }

    > .ui-resizable-se,
    > .ui-resizable-sw {
      background-image: url();
      background-repeat: no-repeat;
      background-position: center;
      @include vendor(transform, rotate(45deg));
    }

    > .ui-resizable-se {
      @include vendor(transform, rotate(-45deg));
    }

    > .ui-resizable-nw { cursor: nw-resize; width: 20px; height: 20px; left: 10px; top: 0; }
    > .ui-resizable-n  { cursor: n-resize;  height: 10px; top: 0; left: 25px; right: 25px; }
    > .ui-resizable-ne { cursor: ne-resize; width: 20px; height: 20px; right: 10px; top: 0; }
    > .ui-resizable-e  { cursor: e-resize;  width: 10px; right: $horizontal_padding / 2; top: 15px; bottom: 15px; }
    > .ui-resizable-se { cursor: se-resize; width: 20px; height: 20px; right: 10px; bottom: 0; }
    > .ui-resizable-s  { cursor: s-resize;  height: 10px; left: 25px; bottom: 0; right: 25px; }
    > .ui-resizable-sw { cursor: sw-resize; width: 20px; height: 20px; left: 10px; bottom: 0; }
    > .ui-resizable-w  { cursor: w-resize;  width: 10px; left: $horizontal_padding / 2; top: 15px; bottom: 15px; }

    &.ui-draggable-dragging {
      &> .ui-resizable-handle {
        display: none !important;
      }
    }

    @for $i from 1 through $gridstack-columns {
      &[data-gs-width='#{$i}'] { width: (100% / $gridstack-columns) * $i; }
      &[data-gs-x='#{$i}'] { left: (100% / $gridstack-columns) * $i; }
      &[data-gs-min-width='#{$i}'] { min-width: (100% / $gridstack-columns) * $i; }
      &[data-gs-max-width='#{$i}'] { max-width: (100% / $gridstack-columns) * $i; }
    }
  }

  &.grid-stack-1>.grid-stack-item {
    min-width: 100%;
    &[data-gs-width='1'] { width: 100%; }
    &[data-gs-x='1'] { left: 100%; }
    &[data-gs-min-width='1'] { min-width: 100%; }
    &[data-gs-max-width='1'] { max-width: 100%; }
  }

  &.grid-stack-animate,
  &.grid-stack-animate .grid-stack-item {
    @include vendor(transition, left $animation_speed, top $animation_speed, height $animation_speed, width $animation_speed);
  }

  &.grid-stack-animate .grid-stack-item.ui-draggable-dragging,
  &.grid-stack-animate .grid-stack-item.ui-resizable-resizing,
  &.grid-stack-animate .grid-stack-item.grid-stack-placeholder{
    @include vendor(transition, left .0s, top .0s, height .0s, width .0s);
  }
}
